Saltar al contenido principal

Integración de Universal Robot (UR) vía TCP/IP

Para integrar el Universal Robot (UR) con el sistema de cámaras, ambos dispositivos deben estar conectados a la misma red local. La comunicación se establece mediante sockets TCP/IP; no se requiere activación adicional más allá de asegurar que ambos dispositivos compartan la misma red.

En esta configuración, la comunicación funciona como una solicitud y una respuesta entre el robot y la cámara. La cámara actúa como servidor, y el robot funciona como cliente.

Flujo de Comunicación Típico

  1. Abra un socket desde el robot.

  2. Envíe información desde el robot a la cámara.

  3. La cámara lee la información y la traduce al formato requerido (p. ej., cadena, ASCII, byte).

  4. La cámara realiza una función utilizando esa información y devuelve una respuesta vía TCP.

  5. El robot espera la respuesta TCP. Si no se recibe una respuesta en un par de segundos, el robot continuará su flujo sin la respuesta.

nota

Se recomienda añadir una condición para confirmar que se devuelven datos.

  1. El robot cierra la comunicación del socket.

Configuración de Red y Firewall

Configuración de Red

  • Asegúrese de que tanto el robot UR como la cámara estén conectados a la misma red local.
  • Asigne direcciones IP dentro de la misma subred para facilitar la comunicación.

Configuración de Firewall

  • Configure reglas de firewall en ambos dispositivos para permitir la comunicación TCP/IP a través de los puertos designados.
  • Verifique que ninguna política de red bloquee la comunicación requerida.

URScript y Programación de Sockets - UR

Formatos de Datos

  • La comunicación puede utilizar diversos formatos de datos como cadenas, ASCII o bytes.
  • Asegúrese de que ambos dispositivos acuerden el formato de datos para evitar malentendidos.

Funciones URScript para la Comunicación por Socket

  • socket_open(address, port, "socket_name"): Abre una conexión de socket a la dirección y puerto especificados.
  • socket_send_string("message", "socket_name"): Envia un mensaje de cadena a través del socket.
  • socket_send_byte(value, "socket_name"): Envia un valor de byte a través del socket.
  • socket_read_string("socket_name"): Lee un mensaje de cadena desde el socket.
  • socket_read_ascii_float(number, "socket_name"): Lee un float ASCII desde el socket.
  • socket_read_byte("socket_name"): Lee un valor de byte desde el socket.
  • socket_close("socket_name"): Cierra la conexión del socket.
# Open socket connection to the camera server
socket_open("192.168.0.2", 3000, "camera_socket")

# Send a string message
socket_send_string("Request Data", "camera_socket")

# Alternatively, send a byte value
socket_send_byte(42, "camera_socket") # Sends the byte value 42

# Read the response as a string
response = socket_read_string("camera_socket")

# Read the response as a byte
response_byte = socket_read_byte("camera_socket")

# Close the socket connection
socket_close("camera_socket")

Configuración como Servidor TCP/IP - OV20i

Configuración del Servidor

  • Configure la cámara para escuchar conexiones TCP entrantes en un puerto específico (p. ej., el puerto 3000).
  • Asegúrese de que la dirección IP de la cámara sea estática o sea conocida por el robot para una comunicación coherente.

Análisis de Datos

  • Implemente la lógica en la cámara para leer los datos entrantes desde el robot.
  • Traduzca y procese los datos según lo requieran las funciones de la cámara.
  • Prepare y envíe la respuesta adecuada de vuelta al robot.

Lógica de Node-RED para la Integración del UR Robot

Para integrar el Universal Robot (UR) con su sistema utilizando Node-RED, puede crear un flujo sencillo que procese mensajes TCP entrantes, realice acciones basadas en los datos recibidos y responda al robot si es necesario.

Flujos de Ejemplo

Aquí hay un ejemplo de flujo para clasificación, en el que la cámara verificará una condición completa de Pass/Fail de la pieza tras un disparador, y enviará la respuesta de vuelta al robot.

Ejemplo de flujo de clasificación del UR Robot

Flujo 1:

  • TCP IN: Abre un servidor TCP en Node-RED en el puerto 30000.
  • Función 1 (Lee UR): Convierte los datos entrantes del robot UR a una cadena. Para que este flujo funcione, el UR debe enviar la cadena "Trigger".
  • Switch: Si la cadena es "Trigger", el flujo continúa; si es otra cosa, el flujo se detiene y el robot UR experimentará un timeout.
  • HTTP Request: Envía una solicitud a un endpoint (API Trigger) para activar el disparador de la cámara.
  • Función 2 (Lectura de Datos): Recupera datos de la memoria global (1 o 0) y los formatea correctamente para la lectura ASCII en el UR robot.
  • TCP Response: Envía la información de vuelta al robot.

Flujo 2:

  • Comando Trigger: Este flujo comienza con el comando de disparo.
  • Todas las salidas de bloque: Generan información de la última imagen tomada (activada en el Flujo 1).
  • Lógica de Bloque de Clasificación: Configura las condiciones para cada ROI (Región de Interés) para determinar el estado Pass o Fail. (Haga clic en el bloque para configurarlo.)
  • Función 3 (Configuración de la Información): Convierte la condición Pass/Fail en 1 o 0 y la almacena en la memoria global para facilitar la traducción al UR robot.

Consideraciones

  • Continuidad del flujo: Asegúrese de que todos los nodos que procesan los datos entrantes estén conectados secuencialmente en el mismo flujo. Si el flujo se divide en rutas paralelas, la TCP Response puede no funcionar adecuadamente.
  • Escenario sin respuesta: Si no se necesita respuesta, puede omitir el nodo TCP Response. El robot debe estar configurado para manejar casos en los que no se reciba una respuesta dentro de un cierto timeout.

Manejo de Errores y Robustez

Tiempos de espera y reintentos

  • Implemente límites de tiempo para las operaciones de sockets para evitar que el robot espere indefinidamente.
  • Incluya mecanismos de reintento en caso de problemas temporales de red.

🔗 Ver también